Repairing Advanced-Memory Buffer (AMB) with redundant memory buffer for repairing DRAM on a fully-buffered memory-module

ABSTRACT

A repairing fully-buffered memory module can have memory chips with some defects such as single-bit errors. A repair controller is added to the Advanced Memory Buffer (AMB) on the memory module. The AMB fully buffers memory requests that are sent as serial packets over southbound lanes from a host. Memory-access addresses are extracted from the serial packets by the AMB. The repair controller compares the memory-access addresses to repair addresses and diverts access from defective memory chips to a spare memory for the repair addresses. The repair addresses can be located during testing of the memory module and programmed into a repair address buffer on the AMB. The repair addresses could be first programmed into a serial-presence-detect electrically-erasable programmable read-only memory (SPD-EEPROM) on the memory module, and then copied to the repair address buffer on the AMB during power-up.

RELATED APPLICATION

This is a divisional of U.S. Ser. No. 11/309,297, filed Jul. 24, 2006,now U.S. Pat. No. 7,379,361.

FIELD OF THE INVENTION

This invention relates to memory modules, and more particularly torepairable memory modules.

BACKGROUND OF THE INVENTION

Personal computers (PC's) and other electronic systems often use smallprinted-circuit board (PCB) daughter cards known as memory modulesinstead of directly mounting individual memory chips on a motherboard.The memory modules are built to meet specifications set by industrystandards, thus ensuring a wide potential market. High-volume productionand competition have driven module costs down dramatically, benefitingthe PC buyer.

Memory modules are made in many different sizes and capacities, such asolder 30-pin and 72-pin single-inline memory modules (SIMMs) and newer16-pin, 184-pin, and 240-pin dual inline memory modules (DIMMs). The“pins” were originally pins extending from the module's edge, but nowmost modules are leadless, having metal contact pads or leads. Themodules are small in size, being about 3-5 inches long and about an inchto an inch and a half in height.

The modules contain a small printed-circuit board substrate, typically amulti-layer board with alternating laminated layers of fiberglassinsulation and foil or metal interconnect layers. Surface mountedcomponents such as DRAM chips and capacitors are soldered onto one orboth surfaces of the substrate.

FIG. 1 shows a fully-buffered memory module. Memory module 10 contains asubstrate such as a multi-layer printed-circuit board (PCB) withsurface-mounted DRAM chips 22 mounted to the front surface or side ofthe substrate, as shown in FIG. 1, while more DRAM chips 22 are mountedto the back side or surface of the substrate (not shown). Memory module10 is a fully-buffered dual-inline memory module (FB-DIMM) that is fullybuffered by Advanced Memory Buffer (AMB) 24 on memory module 10.

Metal contact pads 12 are positioned along the bottom edge of the moduleon both front and back surfaces. Metal contact pads 12 mate with pads ona module socket to electrically connect the module to a PC'smotherboard. Holes 16 are present on some kinds of modules to ensurethat the module is correctly positioned in the socket. Notches 14 alsoensure correct insertion of the module. Capacitors or other discretecomponents are surface-mounted on the substrate to filter noise from theDRAM chips 22.

As system clock speeds increase, data must be transmitted and receivedat ever-increasing rates. Differential signaling techniques are beingused to carry data, clock, and commands to and from memory modules. AMB24 is a chip mounted onto the substrate of memory module 10 to supportdifferential signaling through metal contact pads 12. AMB 24 sends andreceives external packets or frames of data and commands to other memorymodules in other sockets over differential data lines in metal contactpads 12.

AMB 24 also extracts data from the external frames and writes theextracted data to DRAM chips 22 on memory module 10. Command frames toread data are decoded by AMB 24. AMB 24 sends addresses and read signalsto DRAM chips 22 to read the requested data, and packages the data intoexternal frames that are transmitted from AMB 24 over metal contact pads12 to other memory modules and eventually to the host processor.

Memory module 10 is known as a fully-buffered memory module since AMB 24buffers data from DRAM chips 22 to metal contact pads 12. DRAM chips 22do not send and receive data directly from metal contact pads 12 as inmany prior memory module standards. Since DRAM chips 22 do not directlycommunicate data with metal contact pads 12, signals on metal contactpads 12 can operate at very high data rates.

FIG. 2 shows detail of an advanced memory buffer on a fully-bufferedmemory module. AMB 24 contains DRAM controller 50, which generates DRAMcontrol signals to read and write data to and from DRAM chips 22 onmemory module 10. Data is temporarily stored in FIFO 58 duringtransfers.

The data from FIFO 58 is encapsulated in frames that are sent overdifferential lines in metal contact pads 12. Rather than being sentdirectly to the host central processing unit (CPU), the frames arepassed from one memory module to the next memory module until the framereaches the host CPU. Differential data lines in the direction towardthe host CPU are known as northbound lanes, while differential datalines from the CPU toward the memory modules are known as southboundlanes.

When a frame is sent from the host CPU toward a memory module, the frameis sent over the southbound lanes toward one of the memory modules inthe daisy chain. Each memory module passes the frame along to the nextmemory module in the daisy chain. Southbound lanes that are input to amemory module are buffered by its AMB 24 using re-timing andre-synchronizing buffers 54. Re-timing and re-synchronizing buffers 54restore the timing of the differential signals prior to retransmission.Input buffers 52 and output buffers 56 contain differential receiversand transmitters for the southbound lanes that are buffered by re-timingand re-synchronizing buffers 54.

Frames that are destined for the current memory module are copied intoFIFO 58 and processed by AMB 24. For example, for a write frame, thedata from FIFO 58 is written to DRAM chips 22 on the memory module byAMB 24. For a read, the data read from DRAM chips 22 is stored in FIFO58. AMB 24 forms a frame and sends the frame to northbound re-timing andre-synchronizing buffers 64 and out over the northbound lanes fromdifferential output buffer 62. Input buffers 66 and output buffers 62contain differential receivers and transmitters for the northbound lanesthat are buffered by re-timing and re-synchronizing buffers 64.

Self-testing of the memory module is supported by built-in self-test(BIST) controller 60. BIST controller 60 may support a variety ofself-test features such as a mode to test DRAM chips 22 on the moduleand a loop-back test mode to test connections through metal contact pads12 on memory module 10.

FIG. 3 shows fully-buffered memory modules daisy chained together. HostCPU 210 on motherboard 28 reads and writes main memory in DRAM chips 22on memory modules 201-204 through memory controller 220 on motherboard28. Memory modules 201-204 are inserted into memory module sockets onmotherboard 28.

Rather than read and write DRAM chips 22 directly, host CPU 210 sendsread and write commands in packets or frames that are sent oversouthbound lanes 102. The frame from host CPU 210 is first sent frommemory controller 220 to first memory module 201 in the first socket.AMB 24 on first memory module 201 examines the frame to see if it isintended for first memory module 201 and re-buffers and passes the frameon to second memory module 202 over another segment of southbound lanes102. AMB 24 on second memory module 202 examines the frame and passesthe frame on to third memory module 203. AMB 24 on third memory module203 examines the frame and passes the frame on to fourth memory module204.

When data is read, or a reply frame is sent back to host CPU 210,northbound lanes 104 are used. For example, when DRAM chips 22 on thirdmemory module 203 are read, the read data is packaged in a frame by AMB24 and sent over northbound lanes 104 to second memory module 202, whichre-buffers the frame and sends it over another segment of northboundlanes 104 to first memory module 201. First memory module 201 thenre-buffers the frame of data and sends it over northbound lanes 104 tomemory controller 220 and on to host CPU 210.

Since northbound lanes 104 and southbound lanes 102 are composed of manypoint-to-point links between adjacent memory modules, the length andloading of these segments is reduced, allowing for higher speedsignaling. Signaling is to AMB 24 on each memory module rather than toDRAM chips 22.

Many manufacturers make memory modules, including fully-buffered memorymodules. Intense competition has driven memory-module prices to lowlevels, and manufacturers face small profit margins.

Although manufacturing yields are relatively high, some defects dooccur. Memory chips may be pre-screened to eliminate any chips withfailures before being soldered to the memory module. However, thispre-screening of the memory chips may be scaled back to reduce costs.With limited pre-screening, some memory chips with defects may besoldered to memory modules. The defect in the memory chip may remainundetected until final testing of the finished memory module. Then themodule may need to be reworked by un-soldering the defective memorychip, and soldering another memory chip onto the memory module. However,such re-work is expensive and time-consuming.

A limited pre-screening may detect significant multi-bit errors yet notdetect some single-bit errors. For example, limited pre-screening testpatterns may include checkerboard and reverse checkerboard, not walkingones and zeros and other more complex test patterns than can detect allsingle-bit errors. Memory chips with single-bit errors may thus besoldered to memory modules when reduced pre-screening of memory chips isperformed, rather than more extensive pre-screening. Infant mortalitiesmay also cause memory chips to pass the initial screen yet later fail.

What is desired is the ability to repair memory modules withoutexpensive re-work involving de-soldering a defective memory chip andsoldering on a new chip. Reducing manufacturing cost by using a reducedpre-screen test of memory chips is desirable. Repairing memory moduleswith single-bit errors in one of the memory chips is desirable.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 shows a fully-buffered memory module.

FIG. 2 shows detail of an advanced memory buffer on a fully-bufferedmemory module.

FIG. 3 shows fully-buffered memory modules daisy chained together.

FIG. 4 shows some functional blocks inside a repairing AMB for arepairable fully-buffered memory module.

FIG. 5 shows a repairing AMB that has defective addresses programmedfrom a serial-presence-detect electrically-erasable programmableread-only memory (SPD-EEPROM) on the memory module.

FIG. 6 is a flowchart of manufacturing repairable memory modules.

FIG. 7 shows a repair address buffer that stores both the repair addressand the repair data.

FIG. 8 shows a fully-buffered memory module with a repairing AMB drivenby a memory controller on a motherboard.

FIG. 9 is a diagram showing northbound and southbound lanes and SM bussignals between a memory module and a motherboard.

DETAILED DESCRIPTION

The present invention relates to an improvement in memory modules. Thefollowing description is presented to enable one of ordinary skill inthe art to make and use the invention as provided in the context of aparticular application and its requirements. Various modifications tothe preferred embodiment will be apparent to those with skill in theart, and the general principles defined herein may be applied to otherembodiments. Therefore, the present invention is not intended to belimited to the particular embodiments shown and described, but is to beaccorded the widest scope consistent with the principles and novelfeatures herein disclosed.

The inventors have realized that a spare memory may be integrated withthe Advanced Memory Buffer (AMB) of a fully-buffered memory module. Thisspare memory on the AMB may be accessed rather than a defective memorylocation on a memory chip. The AMB can compare incoming addresses to alist or map of defective addresses, and re-route the memory access tothe spare memory when a hit occurs.

The spare memory on the AMB allows the memory chips mounted onto thefully-buffered memory module to contain a few defects. Manufacturingcosts may be reduced since a limited pre-screen test of incoming memorychips may be performed, rather than a more exhaustive pre-screen test.Memory modules with a single-bit defect in one of its memory chips donot have to be reworked, eliminating the time-consuming de-soldering andsoldering of the defective memory chip.

FIG. 4 shows some functional blocks inside a repairing AMB for arepairable fully-buffered memory module. Repairing AMB 100 replaces thestandard AMB on memory module 10 of FIG. 1, or memory modules 201-204 ofFIG. 3. No other changes are necessary for the memory modules in thisembodiment. Thus repair can be supported with a simple replacement ofAMB 24 with repairing AMB 100.

Serial packets are received and retransmitted over southbound lanes forpackets generated by the host. Serial packets are received andretransmitted over northbound lanes for packets generated by the memorymodules. Serializer-deserializer 504 is an interface to the northboundand southbound lanes, and can examine serial packets and extractaddress, data, and commands from the packets. Serializer-deserializer504 can also create serial packets for transmission back to the host,such as packets containing data read from local memory chips.

When serializer-deserializer 504 determines that an incoming packet isdestined for the local memory module, the information in the packet isextracted and any address or data is converted from serial to a parallelformat. The extracted address is sent to address router 502, whichexamines the address to determine if the address is for a defectivememory location. When the address is not to a defective location,address router 502 passes the address and the request to DRAM controller50.

DRAM controller 50 generates local control signals such as RAS, CAS, WEand sends these signals to DRAM chips on the memory module. Statemachines may be used by DRAM controller 50 to generate these signalswith appropriate pulse widths and timings to properly access the DRAMchips. Chip-select and byte-enable signals to the DRAM chips may begenerated from the address as well as from these control signals. Datais applied to the DRAM chips for a write, or read from the DRAM chipsbeing accessed for a read. The read data is then passed back toserializer-deserializer 504, converted to serial packets and transmittedback to the host over the northbound lanes.

Sometimes the address being accessed is for a defective location. Thememory chip is unreliable for that defective address location. Ratherthan access the defective location in the memory chip, a spare memory isaccessed. For addresses matching defective addresses, address router 502sends the request to memory buffer 506 rather than to DRAM controller50. DRAM controller 50 is effectively disabled for these defectivememory locations.

Memory buffer 506 contains spare memory that may be accessed rather thandefective memory in the defective memory chip. Data that is to bewritten to the defective memory chip is instead written to a memorylocation within memory buffer 506. When the defective memory location isread, the read data is read from a location in memory buffer 506 ratherthan from the defective memory chip.

Memory buffer 506 may contain just one memory location, allowing onlyone defect to be repaired in the entire memory module. Alternately,memory buffer 506 may contain several locations, allowing severaldifferent defects to be repaired. Two or more memory chips could bedefective, or there could be two defects in one chip. Each spare memorylocation in memory buffer 506 could be a byte or larger word thatreplaces an entire byte or word in the defective memory chip, even whenonly one bit is defective. A larger block could also be replaced withthe spare memory.

Repair address buffer 68 contains a list of one or more defective memorylocations. The entire address of the defective location could be storedin repair address buffer 68, or just a portion of the defective address.The address could be divided into tag and index portions when repairaddress buffer 68 is arranged as a cache, or repair address buffer 68could be a fully-associative buffer.

Address router 502 compares addresses of requests fromserializer-deserializer 504 to repair addresses in repair address buffer68 to determine when the request is to a defective memory location. Theaddress lookup could delay processing of the request, or pipelining maybe able to reduce or eliminate this lookup delay. When repair addressbuffer 68 contains few entries, the lookup may be very short. DRAMcontroller 50 could be activated for all requests, and then de-activatedwhen a defective address hit is detected by address router 502 in repairaddress buffer 68.

The defective address locations stored in repair address buffer 68 maybe programmed or written through SM-bus interface 134. SM-bus interface134 receives serial commands from SM bus 192, which is a systemmanagement bus. Repair address buffer 68 may be a volatile memory suchas a register, static RAM, or dynamic RAM, and have to be loaded at eachpower-up. Alternately, repair address buffer 68 could be a non-volatilememory such as electrically-erasable programmable read-only memory(EEPROM) or fuses that could be blown.

FIG. 5 shows a repairing AMB that has defective addresses programmedfrom a serial-presence-detect electrically-erasable programmableread-only memory (SPD-EEPROM) on the memory module. Many memory modulescontain SPD-EEPROM 130. SPD-EEPROM 130 stores configuration informationfor the memory module, such as speed, depth, and arrangement of thememory on the memory module. During initialization, the host processorreads the configuration from SPD-EEPROM 130 over SM bus 192 as serialdata.

SPD-EEPROM 130 also stores locations of defective memory on the memorymodule. During manufacture, defective locations are identified and theiraddresses are written as repair addresses 132 in SPD-EEPROM 130. Eachtime that the memory module is powered up or re-initialized, repairaddresses 132 are transferred to repair address buffer 68. SM-businterface 134 reads repair addresses 132 from SPD-EEPROM 130 over SM bus192.

Repair controller 69 compares addresses of requests to the repairaddresses stored in repair address buffer 68 to determine when a repairhit occurs. For repair-address hits, spare memory is accessed by repaircontroller 69 rather than the defective memory in the DRAM chips throughDRAM controller 50. The spare memory may be within repair controller 69or may be attached to repair address buffer 68.

Repairing AMB 100 contains DRAM controller 50. For non-repair addresses,DRAM controller 50 generates DRAM control signals to read and write datato and from DRAM chips 22 on memory module 10 (FIG. 1). Data istemporarily stored in FIFO 58 during transfers. The data from FIFO 58 isencapsulated in frames that are sent over differential lines in metalcontact pads 12. Re-timing and re-synchronizing buffers 54 restore thetiming of the differential signals received by input buffers 52 prior toretransmission. Input buffers 52 and output buffers 56 containdifferential receivers and transmitters for the southbound lanes thatare buffered by re-timing and re-synchronizing buffers 54.

Frames that are destined for the current memory module are copied intoFIFO 58 and processed by repairing AMB 100. For example, for a writeframe, the data from FIFO 58 is written to DRAM chips 22 on the memorymodule by repairing AMB 100. For a read, the data read from DRAM chips22 is stored in FIFO 58. Repairing AMB 100 forms a frame and sends theframe to northbound re-timing and re-synchronizing buffers 64 and outover the northbound lanes from differential output buffer 62. Inputbuffers 66 and output buffers 64 contain differential receivers andtransmitters for the northbound lanes that are buffered by re-timing andre-synchronizing buffers 64.

FIG. 6 is a flowchart of manufacturing repairable memory modules. Memorychips are pre-screened with a reduced set of test patterns that do notdetect all single-bit errors. This reduced pre-screen test is lessexpensive that an exhaustive pre-screen test, so the testing costs maybe reduced significantly. For example, each memory chip may require only100 seconds of testing for a reduced pre-screen test, but 600 secondsfor an exhaustive pre-screen test.

Memory chips passing the reduced pre-screen test are assembled ontosubstrates of memory modules, step 302. A repairing AMB chip is alsosoldered onto the memory module substrate, and other components such ascapacitors may be added. The memory modules are tested, step 304, todetect any defects. When a memory module passes the test at step 304with no defects, it can be sorted and sold as a good memory module, step308.

If a defect is found at steps 304, 306, then the module has failed. Thelocations of the bad memory locations are determined, step 310. This mayrequire further testing, perhaps on a different test machine than thetester for step 304. The number of defects is compared to a limit, step312. When there are more defects than the limit, the memory module issorted as a bad module and reworked or discarded, step 320.

When the number of defects is below the limit, step 312, then thelocations of the defects are written to SPD-EEPROM 130 on the module asthe repair addresses, step 314. Since SPD-EEPROM 130 is non-volatile,these repair addresses are not lost when power is removed from thememory module.

A repair flag may be set in SPD-EEPROM 130, step 316. The repair flagmay be read during power-up initialization of the memory module todetermine when the repair controller needs to be activated. The repairaddresses are then copied to repair address buffer 68 in repairing AMB100 when the repair flag is in the set state.

The repaired memory modules are sorted and can be sold as repairedmemory modules, step 318. Further testing of the repaired memory modulemay also be performed. Since the repaired memory modules and the goodmemory modules from step 308 have the same chips, and operate the samefrom the motherboard's viewpoint, both kinds of memory modules could besold.

The limit N of allowable defects (step 312) may be set to a low valuesuch as 1, 2, or 8 when few defects are likely. Memory modules with moredefects are likely to have serious problems and may be better to bereworked or discarded. Rather than have a numerical limit to the numberof defects, the locations of the defects may be considered. For example,a direct-mapped repair address buffer 68 may only allow one defect witha particular index address. Any other defects with the same indexaddress cannot be repaired. Thus while several defects may be allowed,no two defects can map to the same index. Other limitations on defectlocations could correspond to shortcuts in decoding made by the repaircontroller.

FIG. 7 shows a repair address buffer that stores both the repair addressand the repair data. Repair address buffer 68 can be extended to includerepaired data fields 74 in each valid repair-address entry. Then aseparate memory buffer 506 (FIG. 4) for the repair data is not needed.

Repair address buffer 68 can be arranged as a cache. The incomingaddress of a memory request extracted from a serial packet received onthe southbound lanes can be split into an index portion and a tagportion. For example, the least-significant-bits (LSBs) can be the indexand the most-significant-bits (MSBs) be the tag. The index portion ofthe address selects one of the entries in repair address buffer 68 asselected entry 70. Address tag 72 stored in selected entry 70 is readout and compared to the tag portion of the incoming address bycomparator 63 to determine if a match occurred. A valid bit (not shown)may also be stored with selected entry 70 and used to validate thematch.

When comparator 63 finds a valid match, a repair hit is signaled. Mux 65selects repair data 74 stored with corresponding address tag 72 inselected entry 70, rather than data read from the defective memory chipby DRAM controller 50. When no repair hit occurs, data is transferredfrom the memory chip by DRAM controller 50.

Repair address buffer 68 could be arranged as a direct-mapped cache withonly one entry per index address, or as a set-associative cache with 2,4, or more entries per index address. If the number of defects isexpected to be small, then a direct-mapped cache is acceptable. If twoor more defect addresses map to the same index, then the memory modulecould be re-worked or discarded as an un-repairable module.

FIG. 8 shows a fully-buffered memory module with a repairing AMB drivenby a memory controller on a motherboard. Memory module 10 is insertedinto memory module socket 26, with module contact pads 12 making contactwith socket pads 25 in memory module socket 26 on PC motherboard 28.

With memory module 10 inserted into memory module socket 26, memorycontroller 38 on PC motherboard 28 receives data from a CPU or busmaster and generates control signals that pass through memory modulesocket 26 to memory module 10. Clock generator 35 generates a clock thatis also passed through as a clock to repairing AMB 100 on memory module10.

Repair addresses are stored in SPD-EEPROM 130 during manufacture. Theserepair addresses are copied to repairing AMB 100 so that repaircontroller 69 can compare addresses from the southbound lanes to thelocal copy of the repair addresses. Thus one or more of DRAM chips 22may have a defective memory location and still be repairable usingrepair controller 69 in repairing AMB 100.

Memory controller 38 on motherboard 28 does not have to support repairre-mapping. Indeed, memory controller 38 is not aware of repairremapping by repair controller 69, since repair remapping is transparentto motherboard 28.

BIST controller 30 on motherboard 28 activates test modes of repairingAMB 100 using the SM bus. Errors detected by the internal BIST circuitryin repairing AMB 100 can be passed through to BIST controller 30 tosignal an error to an operating system or boot routine running onmotherboard 28.

FIG. 9 is a diagram showing northbound and southbound lanes and SM bussignals between a memory module and a motherboard. Memory module 10 is afully-buffered memory module that contains DRAM chips (not shown) thatare buffered by repairing AMB 100. Motherboard 28 contains a processorand other logic that generates control signals such as a differentialclock, a reset signal, a system management bus or other control signalsapplied to SPD-EEPROM 130.

SPD EEPROM 130 stores configuration and repair-address information aboutmemory module 10 that is sent over serial data line SPD_D synchronizedto SPD clock SPD_CLK. Address inputs to SPD EEPROM 130 are carried frommotherboard 28 on address lines SPD_A[2:0], which may be hard wired onmotherboard 28. The wiring configuration of SPD_A[2:0] on motherboard 28determines the device address (memory-module slot number) of memorymodule 10. Data sent over serial data line SPD_D is a series of framesconsisting of device address, device type (repairing AMB 100 or SPDEEPROM 130), register location, and register data. Test mode isactivated on repairing AMB 100 by writing to the AMB test-mode controlregisters. Repairing AMB 100 and SPD EEPROM 130 can share clock,address, and serial data lines, but respond to different device types atthe same device address.

Repair controller 69 is within repairing AMB 100. Repair addressesstored in SPD-EEPROM 130 can be copied to a repair address buffer inrepairing AMB 100 as serial data sent over serial data line SPD_Dsynchronized to serial clock SPD_CLK. SM-bus interface 134 in repairingAMB 100 can drive the device address of SPD-EEPROM 130 onto serialaddress lines SPD_A[2:0] to read SPD-EEPROM 130 over serial data linesSPD_D. SM-bus interface 134 on repairing AMB 100 could generate theserial clock, or a free-running serial clock generated on motherboard 28could be used.

Northbound lane inputs NB_IN[13:0], #NB_IN[13:0] to repairing AMB 100are connected to northbound lane motherboard outputs 86, NB_OUT[13:0],#NB_OUT[13:0] on motherboard 28. These 14 northbound lanes carry framesgenerated by downstream memory modules that are being sent to theprocessor, perhaps through upstream memory modules (not shown).

Northbound lane outputs NB_OUT[13:0], #NB_OUT[13:0] from repairing AMB100 are connected to northbound lane motherboard inputs 84 (NB_IN[13:0],#NB_IN[13:0]) on motherboard 28. These 14 northbound lanes carry framesgenerated by memory module 10 or generated by downstream memory modulesthat are being sent to the processor. Northbound lane inputsNB_IN[13:0], #NB_IN[13:0] on motherboard 28 could connect to the memorycontroller and to the processor directly, or could connect to anupstream memory module (not shown).

Southbound lane inputs SB_IN[9:0], #SB_IN[9:0] to repairing AMB 100 areconnected to southbound lane motherboard outputs 87, SB_OUT[9:0],#SB_OUT[9:0] on motherboard 28. These 10 southbound lanes carry framesgenerated by the processor that are being sent to memory module 10 or todownstream memory modules in the daisy chain.

Southbound lane outputs SB_OUT[9:0], #SB_OUT[9:0] from repairing AMB 100are connected to southbound lane motherboard inputs 85 (SB_IN[9:0],#SB_IN[9:0]) on motherboard 28. These 10 southbound lanes carry framesgenerated by the processor that are being sent to downstream memorymodules. Southbound lane outputs SB_OUT[9:0], #SB_OUT[9:0] onmotherboard 28 could be driven by the memory controller directly, orcould connect to an upstream memory module (not shown).

ALTERNATE EMBODIMENTS

Several other embodiments are contemplated by the inventors. For examplethe various functions may be partitioned into a variety of kinds andnumbers of blocks. Functions may be implements in hardware, software,firmware, or various combinations. For example, basic functions such asaddress comparisons may be implemented in hardware logic gates, whilemore complex functions such as error handling may be assisted byexecution of program instructions.

SPD-EEPROM 130 could be integrated into repairing AMB 100. Memory buffer506 could be a memory external to repairing AMB 100 rather than beintegrated with repairing AMB 100. Repair address buffer 68 could benon-volatile memory on repairing AMB 100 and could be directlyprogrammed once, eliminating the need to transfer repair addresses fromSPD-EEPROM 130 at each initialization. Memory buffer 506 could be anextension of repair address buffer 68, or could be part of a largeron-chip memory that includes FIFO 58.

Memory for the repair address in repair address buffer 68 may beflip-flops, registers, latches, SRAM, DRAM, non-volatile memory, orother kinds of memory. Likewise, spare repair memory that stores thereplacement data may be flip-flops, registers, latches, SRAM, DRAM,non-volatile memory, or other kinds of memory. The repair addressesand/or the repair data may be internal to repairing AMB 100 or may beexternal to repairing AMB 100.

BIST controller 30 could be BIOS codes that are tightly linked to theoperating system. It could also be an application program which is runduring system maintenance. Other arrangements of repair address buffer68 may be used, such as a linked list, a tree lookup structure, or asimple list of repair addresses. A few bits of the address could becompared, and if a match occurred, then more bits are compared, anddelay time added. Many optimizations are possible.

The number of northbound and southbound lanes may vary. Differentcontrol signals may be used. Traces may be formed from metal traces onsurfaces of the memory module, or on interior traces on interior layersof a multi-layer PCB. Vias, wire jumpers, or other connections may formpart of the electrical path. Resistors, capacitors, or more complexfilters and other components could be added. For example,power-to-ground bypass capacitors could be added to the memory module.

Signals may be half swing with source termination (output buffer) andload termination (input buffer). A series resistor or a shunt resistorin the path attenuates the signal. Shunt resistance may be around 500ohms with a line impedance of 50 ohms.

Muxes and switches could be added to allow for loop-back testing as wellas standard operation. Future memory module standards and extensions ofthe fully-buffered DIMM standard could benefit from the invention.

Any advantages and benefits described may not apply to all embodimentsof the invention. When the word “means” is recited in a claim element,Applicant intends for the claim element to fall under 35 USC Sect. 112,paragraph 6. Often a label of one or more words precedes the word“means”. The word or words preceding the word “means” is a labelintended to ease referencing of claim elements and is not intended toconvey a structural limitation. Such means-plus-function claims areintended to cover not only the structures described herein forperforming the function and their structural equivalents, but alsoequivalent structures. For example, although a nail and a screw havedifferent structures, they are equivalent structures since they bothperform the function of fastening. Claims that do not use the word“means” are not intended to fall under 35 USC Sect. 112, paragraph 6.Signals are typically electronic signals, but may be optical signalssuch as can be carried over a fiber optic line.

The foregoing description of the embodiments of the invention has beenpresented for the purposes of illustration and description. It is notintended to be exhaustive or to limit the invention to the precise formdisclosed. Many modifications and variations are possible in light ofthe above teaching. It is intended that the scope of the invention belimited not by this detailed description, but rather by the claimsappended hereto.

1. A repairing advanced memory buffer comprising: southbound input meansfor receiving packets over southbound serial lanes from a hostprocessor; southbound output means for transmitting packets oversouthbound serial lanes to a downstream memory module; southboundre-timer means, coupled between the southbound input means and thesouthbound output means, for re-timing packets received by thesouthbound input means for transmission over the southbound outputmeans; northbound input means for receiving packets over northboundserial lanes from the downstream memory module; northbound output meansfor transmitting packets over northbound serial lanes toward the hostprocessor; northbound re-timer means, coupled between the northboundinput means and the northbound output means, for re-timing packetsreceived by the northbound input means for transmission over thenorthbound output means; memory controller means for generating localcontrol signals to memory chips on a local memory module containing therepairing advanced memory buffer; packet extract means, coupled betweenthe southbound re-timer means and the memory controller means, forextracting commands, address and data from packets received over thesouthbound input means from the host processor; packet generation means,coupled between the northbound re-timer means and the memory controllermeans, for generating packets for transmission over the northboundoutput means to the host processor; wherein the packets generated by thepacket generation means contain data read from the memory chips by thememory controller means for address locations within the memory chipsthat are not defective address locations; repair address buffer meansfor storing repair addresses, the repair addresses identifying addresslocations within the memory chips that are defective address locations;and repair controller means, coupled to the repair address buffer meansand to the memory controller means, for disabling access of the memorychips by the memory controller means for repair addresses, wherebyaccess of memory chips is disabled for repair addresses.
 2. Therepairing advanced memory buffer of claim 1 further comprising: sparememory means, accessed by the repair controller means for repairaddresses, for storing replacement data for address locations within thememory chips that are defective address locations; wherein the packetsgenerated by the packet generation means contain the replacement dataread from the spare memory means for address locations within the memorychips that are defective address locations, whereby access is divertedto the spare memory means for repair addresses.
 3. The repairingadvanced memory buffer of claim 2 further comprising: management-businterface means for reading the repair addresses from a non-volatilememory over a management bus and for writing the repair addresses to therepair address buffer means, whereby the repair addresses are copiedfrom the non-volatile memory to the repair address buffer means.
 4. Therepairing advanced memory buffer of claim 2 wherein the repair addressbuffer means further comprises the spare memory means, whereby therepair address buffer means stores the repair addresses and thereplacement data.
 5. The repairing advanced memory buffer of claim 2further comprising; address router means, coupled to the packet extractmeans, for comparing an extracted address extracted from the packetsreceived over the southbound input means from the host processor to therepair addresses.